/**
 * 去除对象属性中参数为空的属性
 * @author 赵京涛
 * @param obj 原始对象
 */
export const filterEmpty = (obj: any): any => {
  if (typeof obj !== 'object' || obj === null) {
    // 如果不是对象或为空，则直接返回  
    return obj;
  }
  if (Array.isArray(obj)) {
    // 过滤数组中的空值、null和undefined，并递归过滤嵌套的对象  
    return obj.filter(item => item !== '' && item !== null && item !== undefined)
      .map(item => filterEmpty(item));
  }
  const result: Record<string, object> = {};
  for (const key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      const value = obj[key];
      if (value !== '' && value !== null && value !== undefined) {
        // 递归过滤嵌套的对象  
        const filteredValue = filterEmpty(value);
        // 对于数组，检查其长度以避免存储空数组  
        if (filteredValue !== null && (Array.isArray(filteredValue) ? filteredValue.length > 0 : true)) {
          result[key] = filteredValue;
        }
      }
    }
  }
  return result;
};
